package designPatterns

/**
 * @chineseName : 单一职责原则
 * @description : 每个类只负责一个行为，这个类发生变化只跟这个行为有关
 * @scene : 一些视频网站中，不同的用户身份会享受到不同的视频清晰度
 * @author : lwl
 * @createTime : 2022/5/6 21:28
 */

fun main() {
    val guest = GuestVideoUserService()
    guest.definition()
    guest.advertisement()
}

/**
 * 视频用户服务接口
 */
interface IVideoUserService {

    fun definition()

    fun advertisement()

}

/**
 * 访客用户
 */
class GuestVideoUserService : IVideoUserService {

    override fun definition() {
        println("访客用户，视频480P高清")
    }

    override fun advertisement() {
        println("访客用户，播放前有广告")
    }

}

/**
 * 普通用户
 */
class OrdinaryVideoUserService : IVideoUserService {

    override fun definition() {
        println("普通用户，视频720P超清")
    }

    override fun advertisement() {
        println("普通用户，播放前有广告")
    }

}

/**
 * vip用户
 */
class VipVideoUserService : IVideoUserService {

    override fun definition() {
        println("VIP用户，视频1080P蓝光")
    }

    override fun advertisement() {
        println("VIP用户，播放前无广告")
    }

}

/**=============================old way=============================**/


class VideoUserService {

    fun severGrade(userType: String) {
        when (userType) {
            "VIP用户" -> {
                println("VIP用户，视频1080P蓝光，播放前无广告")
            }
            "普通用户" -> {
                println("普通用户，视频720P超清，播放前有广告")
            }
            "访客用户" -> {
                println("访客用户，视频480P高清，播放前有广告")
            }
        }
    }

}
